/* 二叉树以先序方式存在于数组A中，设计算法以二叉链表表示 */

#include <iostream>
#include "BiTreefun.h"
using namespace std;

// 创建二叉树
BiTree create(char A[], int i, int n)
{
  BTNode *t;
  
  // i为根结点数值的索引
  if (i < n)
  {
    // 创建根结点
    t = new BTNode;
    t->data = A[i];
    
    // 创建左子树
    t->lchild = create(A, 2 * i + 1, n);
    
    // 创建右子树
    t->rchild = create(A, 2 * i + 2, n);
    
    // 返回根结点
    return t;
  }
  return NULL;
}

// 前序遍历
void pre(BTNode *T)
{
  // 如果二叉树不为空
  if (T != NULL)
  {
    // 打印根结点
    cout << T->data << " ";
    
    // 遍历左子树
    pre(T->lchild);
    
    // 遍历右子树
    pre(T->rchild);
  }
}

int main()
{
  // 先序遍历结果
  char A[] = "abcde";
  
  // 构建二叉树
  BTNode *T = create(A, 0, 6);
  
  // 前序遍历
  pre(T);
  return 0;
}
